#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：django32_celery 
@File    ：pytest_main.py
@IDE     ：PyCharm 
@Author  ：Toby
@Date    ：2024/4/16 14:29 
'''

import pytest
import time, os

Base_path = '/root/django32_celery'

import logging

logger = logging.getLogger(__name__)
CONFIGPATH = "/root/django32_celery/config/params.ini"
REPORT_FILE = "/root/django32_celery/report/"


def get_time():
    time_str = time.strftime('%Y-%m-%d-%H-%M-%S')
    return time_str


class StartRun:

    def __init__(self, fg=None):
        # flag true 代表执行的是选择的脚本 ，否则是 默认的api接口
        if fg is None:
            self.flag = False
        else:
            self.flag = True
        pass

    def runcase(self):
        logger.info("✈✈✈✈✈✈✈✈✈✈StartRunAPI,开始执行✈✈✈✈✈✈✈✈✈✈")
        logger.info(Base_path)
        '''
        当pytest.ini已配置addopts = -v时，py文件里执行pytest.main(["test_001_rights.py"])或cmd下执行pytest，
        未带-v，就会以配置的方式去执行，结果有详细的信息
        '''
        if self.flag:
            TESTCASE_PATH = Base_path + "/choosetest"
            print(f' chose 测试用例选择的是：{TESTCASE_PATH} 下的test文件')

            # file_path = REPORT_FILE + time.strftime('%Y-%m-%d-%H-%M-%S') + "_result.xlsx"
            # file_path = REPORT_FILE + "1_result.xlsx"
            # if not os.path.exists(file_path):
            #     with open(file_path, 'w'):
            #         logger.info("创建完成!")
            # else:
            #     logger.info('文件已经存在!')

        else:
            TESTCASE_PATH = Base_path + "/testcase"
            print(f" beat 测试用例选择 ：TESTCASE_PATH:{TESTCASE_PATH}下的test文件  ")
        HTML = Base_path + '/report/' + time.strftime('%Y-%m-%d-%H-%M-%S') + '_XLR_API_report.html'
        pytest.main(['-v',
                     '-s',
                     # '--html=/root/django32_celery/report/{}_XLR_API_report.html'.format(get_time()),
                     '--html=' + HTML,
                     '--self-contained-html',
                     '--capture=sys',  # --capture=sys ：打开实时输出，Captrue Log只捕获sys.out，sys.err
                     TESTCASE_PATH])

        print('*' * 100)
        logger.info("✈✈✈✈✈✈✈✈✈✈运行结束 ✈✈✈✈✈✈✈✈✈✈")
        return HTML


if __name__ == '__main__':
    # 方式一   可以成功
    # pytest.main()
    print("从main开始执行脚本:")
    # 方式二  allure 需要使用jdk1.8
    # pytest.main(['--alluredir','report1/result',TESECASE_PATH])     # 生成测试报告json
    # 将测试报告换成html格式，
    # split ="allure“+” generate"+"./report1/result"+"-o "+ "./report1/html"+"--clean"
    # os.system(split)
    # 方式三
    html_path = StartRun(True).runcase()
    print(html_path)

